package com.enba.rbacadmin.module.auth.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.enba.rbacadmin.module.auth.controller.req.LoginReq;
import com.enba.rbacadmin.module.auth.controller.req.RegisterReq;
import com.enba.rbacadmin.module.auth.controller.req.UpdatePasswordReq;
import com.enba.rbacadmin.module.auth.controller.req.UserAddUpdateReq;
import com.enba.rbacadmin.module.auth.controller.req.UserBindRoleReq;
import com.enba.rbacadmin.module.auth.controller.req.UserPageReq;
import com.enba.rbacadmin.module.auth.controller.resp.UserPageResp;
import com.enba.rbacadmin.module.auth.entity.User;
import java.util.List;

/**
 * 用户表 服务类
 *
 * @author 恩爸编程
 * @since 2025-02-28
 */
public interface IUserService extends IService<User> {

  /**
   * 注册
   *
   * @param req
   * @return
   */
  Boolean register(RegisterReq req);

  /**
   * 登录
   *
   * @param req
   * @return
   */
  String login(LoginReq req);

  /**
   * 退出登录
   *
   * @return
   */
  Boolean logout();

  /**
   * 新增或修改
   *
   * @param req
   * @return
   */
  Boolean saveOrUpdate(UserAddUpdateReq req);

  /**
   * 分页查询
   *
   * @param req
   * @return
   */
  Page<UserPageResp> userFindPage(UserPageReq req);

  /**
   * 用户绑定角色
   *
   * @param req
   * @return
   */
  boolean bindRole(UserBindRoleReq req);

  /**
   * 修改密码
   *
   * @param req
   * @return
   */
  boolean updatePassword(UpdatePasswordReq req);

  /**
   * 删除
   *
   * @param id 主键id
   * @return
   */
  boolean delete(Integer id);

  /**
   * 批量删除
   *
   * @param ids 主键id集合
   * @return
   */
  boolean deleteBatch(List<Integer> ids);
}
